const express = require("express");

// // 自己实现一个中间件
// const cookieParser = function (req, res, next) {
//   console.log("cookieParser");

//   // TODO..
//   const str = req.get("Cookie"); // name=张三
//   console.log(str);

//   const result = {};
//   const key = str.split("=")[0];
//   const value = str.split("=")[1];

//   result[key] = value;

//   // 挂在 req 对象上
//   req.cookies = result;

//   next();
// };

// // 实现一个 myLogger 中间件  所有请求，在控制台都输出一段 GET /xxx
// //                                                POST /xxx

const myLogger = function (req, res, next) {
  console.log(`${req.method} ${req.url}`);

  next();
};

const app = express();

// app.use(cookieParser);
// app.use(myLogger);
// // 实现一个 requestTime 中间件  给 req 增加一个 requestTime 属性，属性的值时请求时间
// app.use(function (req, res, next) {
//   req.requestTime = new Date();

//   next();
// });

const sleep = (time = 1000) => {
  return (req, res, next) => {
    setTimeout(() => {
      next();
    }, time);
  };
};

app.get("/", sleep(5000), (req, res) => {
  console.log(req.cookies); // 输出 { name: '张三' }
  console.log(req.requestTime); // 输出 xxxx
  res.send(req.cookies);
});

app.listen(3000);
